package com.shy.task.quartz.core;

import com.shy.task.entity.TaskEntity;

/**
 * quartz service
 *
 * @author shanhanyu
 * @date 2018/9/10 - 15:54
 */
public interface QuartzService {
	
	/**
	 * 判断job是否已存在，相同的jobId
	 * @param jobId
	 * @return   
	 * @date: 2020年3月22日 上午12:15:08
	 */
	boolean checkJobExist(String jobId);

	/**
	 * 添加一个 quartz job
	 *
	 * @param job
	 */
	void addQuartzJob(TaskEntity job);

	/**
	 * 更新 job，此方法仅更新执行表达式
	 *
	 * @param job
	 */
	void updateQuartzJob(TaskEntity job);

	/**
	 * 删除 job
	 *
	 * @param job
	 */
	void deleteQuartzJob(TaskEntity job);

	/**
	 * 暂停一个 job
	 *
	 * @param job
	 */
	void pauseQuartzJob(TaskEntity job);

	/**
	 * 恢复一个 job
	 *
	 * @param job
	 */
	void resumeQuartzJob(TaskEntity job);

	/**
	 * 立即执行一次
	 *
	 * @param job
	 */
	void immediateExecuteJob(TaskEntity job);

	/**
	 * 动态更新 job 执行的 class
	 *
	 * @param bytes
	 * @param cfg
	 */
	void updateQuartzJobExecuteClass(byte[] bytes, TaskEntity cfg);
	
	
	/**
	 * 动态更新 job，删除job再进行重载
	 *
	 * @param bytes
	 * @param cfg
	 */
	void updateQuartzJobParams(TaskEntity cfg);
}
